﻿//#include <iostream>
//using namespace std;
//#include <vector>
//#include <algorithm>
///*
//算法主要是由头文件<algorithm><functional><numeric>组成。
//<algorithm>是所有STL头文件中最大的一个，范围涉及到比较、交换、查找、遍历操作、复制、修改等等
//<numeric>体积很小，只包括几个在序列上面进行简单数学运算的模板函数
//<functional>定义了一些模板类，用以声明函数对象。
//*/
//
///*
//for_each        //遍历容器
//transform       //搬运容器到另一个容器中
//
//for_each(iterator beg, iterator end, _func);
////遍历算法遍历容器元素
////beg开始迭代器
////end结束迭代器
////_func函数或者函数对象
//*/
//
///*
//* transform(iterator beg1, iterator end1, iterator beg2, _func);
////beg1源容器开始迭代器
//l//end1源容器结束迭代器
////beg2目标容器开始迭代器
////_func函数或者函数对象
//*/
//
////普通函数
//void print01(int val)
//{
//    cout << val << " ";
//}
////仿函数
//class print02
//{
//public:
//    void operator()(int val)
//    {
//        cout << val << " ";
//    }
//};
//
//class Transform
//{
//public:
//    int operator()(int val)
//    {
//        return val;
//    }
//};
//
//void test01()
//{
//    vector<int>v;
//    for (int i = 0; i < 10; i++)
//    {
//        v.push_back(i);
//    }
//    for_each(v.begin(), v.end(), print01);
//    cout << endl;
//
//    for_each(v.begin(), v.end(), print02());
//    cout << endl;
//
//
//    vector<int>vTarget;
//    vTarget.resize(v.size());//目标容器提前开辟空间
//    transform(v.begin(), v.end(), vTarget.begin(), Transform());
//    for_each(vTarget.begin(), vTarget.end(), print02());
//    cout << endl;
//}
//
//int main()
//{
//    test01();
//    system("pause");
//    return 0;
//}
//
